1. Introduction

The Object Plant gives you the opportunity to create three different kinds of descriptions of a software
system.

The notation is based upon the Object Modeling Technique (OMT) developed by Rumbaugh et al and
UML (Unified Modelling Language) developed by Rumbaugh, Booch and Jacobson. This help text
will only refer to OMT notation.

This is not a complete description of the program, refer to the User's Manual for more information.

1.1 The Object Model

"An object model captures the static structure of a system by showing the objects in the system, relation-
ships between the objects, and the attributes and operations which characterize each class of objects."

The Object Plant allows you to create Object Model diagrams, where you can model classes, interfaces, 
associations, generalizations and aggregations. The Object Model diagram can be split into several pages,
each page representing a part of a system.

The picture below shows an example of an Object Model diagram.

1.2 The Dynamic Model

"The major dynamic modeling concepts are events, which represent external stimuli, and states, which
represent values of objects"

The Object Plant allows you to create Event Trace diagrams and State diagrams. Each of them can be
divided into several pages much like the Object Model diagram.

Substates will eventually be provided, but the current version does not support substates.

The picture below shows an example of an Event Trace diagram.

A thread is normally an object in the software system. The boxes on a thread shows when the object is active.
Events can either be function calls, queue messages or some other way of communication.

2. Object Model Diagram

The Object Model Toolbox contains ten different tools:

2.1 Select Tool

The select tool is used to select one or several of the items in an Object Model page. There are only two types
of items in an Object Model page, class items and association items, where association items may be of the
Aggregation, Association or Generalization type.

To select one item click on the item. A selected item is marked by a set of small black squares positioned at
the corners of the item.

To select several items, one may either shift-click the items or framing a set of items by holding the mouse
button down while stretching a select frame.

The select tool is also used to move items. If you hold the mouse button down when selecting a class, the
cursor will after will change to a move cursor    . You may then move the selected items freely. If you hold
the mouse button down when selecting an association, the move cursor will appear only if the cursor is
positioned above a black select square. If you then move the mouse, that point of the association will move.

The select tool is used to created subsystems. This is done by doubleclicking on a class box while pressing
the option-key. The top level class box will then be drawn with a dashed outline to indicate that it is a sub-
system and not a real class. A new page for the subsystem will automatically be created and the page will
have the name of the "parent-class". In the page palette, the name of subsystems will be indented relative
its parent.

2.2 Class Tool

The Class Tool is used to create class items in the Object Model. Not much to say about this tool...

2.3 Interface Tool

The Interface Tool is used to create interface items in the Object Model. Interfaces are not supported in
the OMT notation but Unified Modeling Language supports interfaces.

2.4 Supplier Tool

The Supplier Tool is used to create an supplier association between a class and an interface (a class
supplies an interface). When this tool is selected the cursor will change into the association cursor   .

Position the cursor at a class, press and hold the button and stretch a line to the interface and then release
the button.

If you release the button outside any class item, no association will be created.

2.5 Association Tool

The Association Tool is used to create an Association between two classes. When this tool is selected the
cursor will change into the association cursor.

Position the cursor at a class, press and hold the button and stretch a line to the other class and then release
the button. If you want a selfreferencing association, press and release the button in the same class item.

2.6 Aggregation Tool

The Aggregation Tool works almost the same as the Association Tool but with one difference. It is possible to
create multibranch aggregations:

To make a multibranch aggregation, start creating an ordinary aggregation between two classes. Add a new
branch by pushing the button on the aggregation, either any of the lines or in the small diamond. Then
stretch it to a class item and release the button.

2.7 Generalization Tool

The Generalization Tool works as the Aggregation Tool. Multibranch generalizations are possible.

2.8 Cut Tool

The Cut Tool can be used to split an association line into two. Position the top of the knife cursor at the line
where you want it to be splitted.

2.9 Note Tool

You can place notes anywhere in the diagrams. In the current version, notes are not related to any
particular part of a diagram, they are standalone, but in future releases they will be connected to some
other item in a diagram.

A note can, for example, include pseudo code to illustrate the implementation of a class operation.

A note can be resized by selecting it and draging in any of the corner squares.

2.10 Inspect Tool

With this tool you can read the Description field of every item (class, association etc) without having to
open a dialog window for the item. Just position the magnifying glass above the item you want to study
and the description text will be presented in a "balloon-ish" frame.

2.11 Nested Object Models

You can create nested models containing subsystems each of them described on a separate Object Model page.
A class item can be turned into a subsystem by double-clicking on the class item with the select tool while
pressing the option-key. A new page will then be opened which has the name of the class item. The name of
the new page page cannot be changed, it will always have the same name as it original class.

The original class item will be drawn with a dashedout line to indicate that it is a subsystem. If you try to
delete such a class, a confirmation dialog will show up. If you confirm the deletion of the class, the nested
page will also be deleted.

In the page palette window, nested object model page names will be indented relative their parent names.

3. Event Trace

The Event Trace Toolbox contains six different tools:

3.1 Select Tool

The select tool in the Event Trace diagram works the same way as in the Object Model diagram. The only
difference it that when you move items in the Event Trace diagram the move cursor may look different.
When you move threads, you can only move them sideways why the move cursor looks like this     . When
you're moving boxes, you may only move them up and down why the cursor looks like this    .

You also use the select tool to change the size of threads and boxes. If you hit either end of a thread, the
cursor will change to the resize cursor which looks like this    . You may then change the size of the
threads. Note that all threads will change size. They always have the same height. To alter the size of a box,
hit either end of the box and the cursor changes to the resize cursor. Then move the mouse to change the
size of the box.

3.2 Thread Tool

The Thread Tool is used to create thread items in the Event Trace diagram. Not much to say about this tool
except that the height of a new thread is determined by the height of other threads in the diagram. All
threads must always have equal heights.

3.3 Box Tool

The Box Tool is used to create box items in the Event Trace. When you have selected this tool and moves the
cursor over a thread, a hanging box will appear below the cursor. This indicates that you may create a box
at the current position.

3.4 Event Tool

The Event Tool is used to create an event between two boxes. When this tool is selected the cursor will
change into the event cursor  .

Position the cursor at a box, press and hold the button and stretch a line to the other box and then release
the button. If you want a selfreferencing event, press and release the button in the same box item.

If you release the button outside any box item, no event will be created.

3.5 Note & Inspect Tool

Are exactly the same as the Object Model note and inspect tool.

4. State Diagrams

The State Diagram Toolbox contains eight different tools.

4.1 Select Tool

The select tool in the State Diagram works the same way as in the Object Model diagram. 

4.2 Initial and Final State Tool

These tools can be used to insert final and initial state symbols (bull's eye and filled circle).

4.3 Note & Inspect Tool

Are exactly the same as the Object Model note and inspect tool.

5. The Menus

The Object Plant has five fixed menus and two menus which appear now and then. The fixed menus are:
File, Edit, View, Special and Windows.

5.1 File Menu

When no document is open, the file menu looks like this:

The New, Open, Save, Save as, Close and Quit do not require any explanation, do they?

When a document is open (note that a document may be open even though no windows are visible) the File
menu looks like this:

The "Document Info..." item contains two submenys: "General..." and "Datatypes...". In the General item you
can select the notation to be used with the document. The Datatypes item will bring up a dialog where
you can specify the data types used in the document (project). You can create your own set of data types
by adding and removing data types as you like. There is one standard C++ data type set included in the Object
Plant package which can be loaded using the "Load set"-button.

Here the "Export Page as..." item is used to export the current main window content in PICT or EPS format.
Note that not all types of window may be exported, only the three main windows: Object Model, State
Diagram and Event Trace windows.

The "Generate code..." item is used to generate code as described by the currently selected template files (in
the Code generation preferences dialog).

The Print Page item will print the selected page in the currently active main window.

5.2 Edit Menu

In this menu the Cut, Copy and Paste items are enabled and implemented for text fields. Copy and Paste are also
enabled for certain items in the diagrams such as classes, states and threads. The Clear can also be used to
delete parts in the Object Model, State Diagram and Event Trace diagram.

The Clear item can also be used to delete class attributes and operations. To do this, doubleclick on the class box so that
the Class Dialog Window appears. Then select the attribute or operation to be deleted by clicking to the left
of the attribute's (or operation's) name or description field. The attribute will then be selected and the
"Clear" item of the Edit menu will be enabled.

Event entries in state boxes can be deleted the same way as class attributes and operations.

5.3 View Menu

The number of items in this menu depends upon the number of "View sets" that you have defined in the
Special->Preferences->View... dialog (see below).

5.4 Special Menu

This menu has five items: Info, Align, New Page, Delete Page and Preferences.

"Info" will be enabled when one or several items in the currently active main window are selected. Choosing
"Info" will present a dialog window for each of the selected items. The same dialog window will appear when
doubleclicking on an item.

If you delete the last page in for example the Object Model, a new empty page will automatically be created
since all models must have at least one page.

The preferences item has three submenus named "General...", "View..." and "Code generation...". The last
item is never enabled in the current version since the code generation part is not yet implemented.

The "View..." item brings up a dialog that looks like this:

You can specify which information stored in the document that shall be displayed. Normally one wants less
information at an early stage of the project e.g. during the analysis phase than during the implementation
phase. To support different "views" of a project, you can define your own set of "views". For each view
(called Set) you specify what to be displayed. There is always a default view which cannot be deleted.